/*
    功能：生成博客目录的JS工具
    测试：IE8，火狐，google测试通过
    孤傲苍狼
    2014-5-11
*/
var BlogDirectory = {
    /*
        获取元素位置，距浏览器左边界的距离（left）和距浏览器上边界的距离（top）
    */

    htmlDecode: function(text) {
        var temp = document.createElement("div");
        temp.innerHTML = text;
        var output = temp.innerText || temp.textContent;
        temp = null;
        return output;
    },

    /*
    创建博客目录，
    id表示包含博文正文的 div 容器的 id，
    mt 和 st 分别表示主标题和次级标题的标签名称（如 H2、H3，大写或小写都可以！），
    interval 
    */
    createBlogDirectory: function(id, mt, st, interval) {
        //获取博文正文div容器
        var elem = document.getElementById(id);
        if (!elem) return false;
        //获取div中所有元素结点
        var nodes = elem.getElementsByTagName("*");
        //创建博客目录的div容器
        var divSideBar = document.createElement('div');
        divSideBar.className = 'sideBar';
        divSideBar.setAttribute('id', 'sideBar');
        var divSideBarTab = document.createElement('div');
        divSideBarTab.setAttribute('id', 'sideBarTab');
        divSideBar.appendChild(divSideBarTab);
        var h2 = document.createElement('a');
        divSideBarTab.appendChild(h2);
        var txt = document.createTextNode('目录导航');
        h2.appendChild(txt);
        var divSideBarContents = document.createElement('div');
        divSideBarContents.style.display = 'none';
        divSideBarContents.setAttribute('id', 'sideBarContents');
        divSideBar.appendChild(divSideBarContents);
        //创建自定义列表
        var dlist = document.createElement("ol");
        divSideBarContents.appendChild(dlist);
        var num = 0; //统计找到的mt和st
        mt = mt.toUpperCase(); //转化成大写
        st = st.toUpperCase(); //转化成大写
        var last;
        //遍历所有元素结点
        for (var i = 0; i < nodes.length; i++) {
            if (nodes[i].nodeName == mt || nodes[i].nodeName == st) {
                //获取标题文本
                var nodetext = nodes[i].innerHTML.replace(/<\/?[^>]+>/g, ""); //innerHTML里面的内容可能有HTML标签，所以用正则表达式去除HTML的标签
                nodetext = nodetext.replace(/ /ig, ""); //替换掉所有的 
                nodetext = BlogDirectory.htmlDecode(nodetext);
                //插入锚
                var title_id = "H" + num

                var item;
                switch (nodes[i].nodeName) {
                    case mt: //若为主标题
                        nodes[i].setAttribute("id", title_id);

                        item = document.createElement("li");

                        ah = document.createElement("a");
                        ah.setAttribute("href", "#" + title_id);
                        var itemtext = document.createTextNode(nodetext);
                        ah.appendChild(itemtext);

                        item.appendChild(ah);

                        dlist.appendChild(item);

                        last = document.createElement("dl");
                        dlist.appendChild(last);

                        break;
                    case st: //若为子标题
                        nodes[i].setAttribute("id", title_id);

                        item = document.createElement("dt");

                        ah = document.createElement("a");
                        ah.setAttribute("href", "#" + title_id);
                        var itemtext = document.createTextNode(nodetext);
                        ah.appendChild(itemtext);

                        item.appendChild(ah);
                        last.appendChild(item);

                        break;
                }

                num++;
            }
        }

        if (num == 0) return false;
        /*鼠标进入时的事件处理*/
        // divSideBarTab.onmouseenter = function() {
        //         divSideBarContents.style.display = 'block';
        //     }
        //     /*鼠标离开时的事件处理*/
        // divSideBar.onmouseleave = function() {
        //     divSideBarContents.style.display = 'none';
        // }

        document.body.appendChild(divSideBar);


        $("#sideBarTab").click(function() {
            if ($("#sideBarContents").css("display") == "none") {
                $("#sideBarContents").show();
            } else {
                $("#sideBarContents").hide();
            }
        });

    }

};

window.onload = function() {
    /*页面加载完成之后生成博客目录*/
    BlogDirectory.createBlogDirectory("write", "h2", "h3", 20);
}